package com.huafeng.listener;

import cn.hutool.json.JSONUtil;
import com.huafeng.entity.Notice;
import com.huafeng.enums.NoticeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
 * @author 花风
 * @date 2023/4/5 10:40
 * @Description 通知监听器
 */
@Slf4j
@Service
@com.huafeng.annotations.Listener(type = "notice")
public class NoticeListener implements Listener {
    @Override
    public Object parse(String messageJson) {
        Notice notice = JSONUtil.toBean(messageJson, Notice.class);
        String noticeType = notice.getNoticeType();

        //根据类型获取函数
        Function<List<String>, Object> function = NoticeEnum.get(noticeType);
        //如果操作者账号和发送者账号一样，则说明是群成员自己主动操作的(加群操作除外)
        function.apply(Arrays.asList(notice.getMessageId(), notice.getUserId(),notice.getGroupId()));
        return null;
    }
}
